class IPAddress { 
  /**
   * IP地址（ws://192.168.1.1:8080）
   * @param ip 
   * @param port 端口
   * @param protocol 协议语法
   */
  constructor(ip,port,protocol) { 
    this.protocol = (protocol ? protocol : 'ws://');
    this.ip = ip ? ip : '127.0.0.1';
    this.port = port ? port : null;
  }

  getURI() { 
    return this.protocol + this.ip + ':' + this.port;
  }

  initParas(ip, port) {
    this.ip =ip;
    this.port = port;
  }

  toString() { 
    return this.getURI();//JSON.stringify(this);
  }

  /**
   * 将IPAddress的json字符串转成对象
   * @param jsonStr Json字符串
   * @returns IPAdress 对象
   */
  static json2Obj(jsonStr) {
    if (typeof jsonStr == 'string') {
      var jsonObj = JSON.parse(jsonStr);
      return new IPAddress(jsonObj.ip, jsonObj.port, jsonObj.protocol);
    } else {
      return new IPAddress(jsonStr.ip, jsonStr.port, jsonStr.protocol);
    }
  }
}

module.exports = IPAddress;